Lambda関数の同時実行予約数の一覧を取得してみた
こんにちは、平野です。
Lambda関数に、同時実行数の予約をすることができます。 この数値(ReservedConcurrency)は、1アカウント毎にデフォルトで900までとなっています。
参照: 同時実行数の管理 (上限緩和のリクエスト方法などもこちらを参照してください。)
先日新しい関数をデプロイする際に、この上限に引っかかってしまいデプロイに失敗してしまいました。 無駄に大きく割り当てられている関数があるはずなので、それを調べようとしましたが、 素直に一発で一覧を取得できるようなCLIコマンドが見当たりませんでした。
ということで、非常に簡単ですがスクリプトを作成しました。
Pythonスクリプト
import boto3 lambda_client = boto3.client('lambda') def get_function_names(): fuction_names = [] res = lambda_client.list_functions() fuction_names.extend([f['FunctionName'] for f in res['Functions']]) while 'NextMarker' in res: res = lambda_client.list_functions(Marker=res['NextMarker']) fuction_names.extend( [f['FunctionName'] for f in res['Functions']]) return fuction_names for name in get_function_names(): reserved = "-" function_data = lambda_client.get_function(FunctionName=name) if 'Concurrency' in function_data and 'ReservedConcurrentExecutions' in function_data['Concurrency']: reserved = str( function_data['Concurrency']['ReservedConcurrentExecutions']) print(name + "\t" + reserved)
実行例
関数名と設定された数値をタブ区切りで出力します。
ReservedConcurrencyの設定がないものについては-
と出力します。
$ python list-reserved-concurrency.py test_func_01 - test_func_02 15 test_func_03 3 test_func_04 3 test_func_05 -
ポイント
ポイントというほどではないですが、
list_functions
メソッドでは上限50個の関数しか取得ができないため、
NextMarker
を指定して全件を取得しています。
マネジメントコンソールでの小さな注意点
上の画像はReservedConcurrencyにある値を設定した状態でのスクリーンショットです。 さて、設定されている値はいくつでしょうか???
正解は15
です。
どうやら先頭の1
しか見えないようです。(私の環境だけ??)
マウスで選択したりするとちゃんと15
と入っているが確認できます。
まとめ
aws lambda list-functions
では取得できない
ReservedConcurrencyの一覧を取得してみました。
制限の上限に達して、一覧から棚卸ししたいような場合に活用頂ければと思います。